Penerapan Regresi Linear Berganda

Pengertian Regresi Linear Berganda

Regresi linear berganda adalah salah satu teknik prediksi yang menggunakan beberapa variabel bebas untuk memprediksi hasil dari variabel terikat. Tujuan dari regresi linear untuk memodelkan hubungan linear antara variable bebas dan variabel terikat. Regresi linear berganda dinyatakan dengan persamaan terbaik berikut. $$ y = x_1b_1 + x_2b_2 + ... +x_nb_n + a $$ dimana:

$ y $ = variabel terikat.

$ x $ = variable bebas.

$ b $ = koefisien estimasi.

$ a $ = konstanta.

Perhitungan Regresi Linear Berganda

Dalam hal ini akan dilakukan perhitungan regresi linear dengan dua fitur variabel bebas, yang mana data seperti berikut.

X1 X2 Y
2 3 10
4 2 12
5 3 16
7 1 16

Maka kita dapat menggunakan persamaan $ y = x_1b_1 + x_2b_2 + a $ untuk memprediksi data baru yang diberikan. sebelum menggunakan persamaan tersebut kita perlu untuk mencari koefisien estimasi dari $ b_1 $, $ b_2 $, dan $ a $. yang dapat menggunakan formula berikut. $$ b_1 = {[(\sum x_2^2 \sum x_1y)-(\sum x_2y \sum x_1 x_2)] \over [(\sum x_1^2 \sum x_2^2 ) - (\sum x_1 x_2)^2] } $$

b_2 = {[(\sum x_1^2 \sum x_2y)-(\sum x_2y \sum x_1 x_2)] \over [(\sum x_1^2 \sum x_2^2 ) - (\sum x_1 x_2)^2] }
a = {(\sum y) - (b_1 - \sum x_1) - (b_2 - \sum x_2) \over n}

Kita dapat melakukan perhitungan dari formula diatas untuk mendapatkan nilai koefisien estimator, dan konstanta. proses perhitungan seperti berikut, dan baris terakhir merupakan jumlah ($ \sum $) dari seluruh baris pada kolom tersebut.

No X1 X2 Y X1 ^ 2 X2 ^ 2 Y ^ 2 X1 * X2 X1 * Y X2 * Y
1 2 3 10 4 9 100 6 20 30
2 4 2 12 16 4 144 8 48 24
3 5 3 16 25 9 256 15 80 48
4 7 1 16 49 1 256 7 112 16
Total ($ \sum $) 18 9 54 94 23 756 36 260 118

dari hasil jumlah diatas kita harus normalisasi kembali.

$ \sum x_1^2 = \sum x_1^2 - {(\sum x_1)^2 \over n} = 94 - {324 \over 4} = 13 $

$ \sum x_2^2 = \sum x_2^2 - {(\sum x_2)^2 \over n} = 23 - {81 \over 4} = 2,75 $

$ \sum y^2 = \sum y^2 - {(\sum y)^2 \over n} = 756 - {2916 \over 4} = 27 $

$ \sum x_1y = \sum x_1y - {(\sum x_1 \sum y ) \over n} = 260 - {972 \over 4} = 17 $

$ \sum x_2y = \sum x_2y - {(\sum x_2 \sum y ) \over n} = 118 - {486 \over 4} = -3,5 $

$ \sum x_1x_2 = \sum x_1x_2 - {(\sum x_1 \sum x_2 ) \over n} = 36 - {162 \over 4} = -4,5 $

$ b_1 = {[(\sum x_2^2 \sum x_1y)-(\sum x_2y \sum x_1 x_2)] \over [(\sum x_1^2 \sum x_2^2 ) - (\sum x_1 x_2)^2] } = {[(2,75 * 17)-(-3,5 * -4,5)] \over [(12 * 2,75 ) - (-20.25)] } = 2 $

$ b_2 = {[(\sum x_1^2 \sum x_2y)-(\sum x_2y \sum x_1 x_2)] \over [(\sum x_1^2 \sum x_2^2 ) - (\sum x_1 x_2)^2] } = {[(12 * -3,5)-(-3,5 * -4,5)] \over [(12 * 2,75 ) - (-20.25)] } = 2 $

$ a = {(54) - (2 - 18) - (b_2 - 9) \over 4} = 0 $

kemudian di dapatkan nilai koefisien estimator $ b_1 = 2 $ dan $ b_2 = 2 $ dan konstanta ($ a = 0 $ ) . dari proses perhitungan diatas, maka di dapatkan persamaan seperti berikut. $ y = x_1 * 2 + x_2 * 2 + 0 $. misalkan kita memiliki data baru dengan $ x_1 = 6 $ dan $ x_2 = 2 $ maka kita dapat menghitungnya seperti berikut. $ y = 6 * 2 + 2 * 2 + 0 = 16 $

Implementasi dengan Sklearn Python

Pertama kita dapat memuat data yang akan digunakan sebagai data training dari data yang berbentuk csv. kita dapat menggunakan library pandas untuk memuat data tersebut dan menampilkan dalam bentuk dataframe.

import pandas as pd
from sklearn.linear_model import LinearRegression
data = pd.read_csv('data.csv', sep=';')
df = pd.DataFrame(data)
df.style.hide_index()

Maka akan tampil seperti berikut, dimana dalam data tersebut terdapat empat variable bebas, yaitu x1, x2, x3, dan x4 dan satu variabel terikat.

X1 X2 X3 X4 Y
2 3 6 2 169
5 2 4 2 169
3 4 2 3 144
5 7 3 3 324
5 6 7 8 676

Kemudian kita dapat mengambil data variable bebas yang di tampung pada variabel X, dan y sebagai variabel terikat. dan kita dapat menggunakan class LinearRegresion() yang merupakan libarary dari sklearn untuk melakukan prediksi menggunakan metode regresi linear. dan data tersebut dimasukkan dengan metode fit(X, y).

X = df.iloc[0:, 0:4].values
y = df.iloc[0:, 4].values
reg = LinearRegression().fit(X, y)
reg.score(X, y)
1.0

Untuk dapat mengetahui nilai konstanta kita bisa memanggil attribut intercept_

a = reg.intercept_
a

Maka akan tampil nilai konstanta dari perhitungan tersebut.

-276.51245551601414

Untuk mendapatkan nilai coefisien dari seluruh fitur dapat dengan menggunakan attribut coef_. nilai kembalian dari attibut ini berupa array sebanyak variabel bebas yang ada.

reg.coef_

Maka akan tampil seperti berikut, element pertama dari array berikut merupakan koefisien dari $ b_1 $ sampai ke $ n $

array([31.5480427 , 27.83274021, 33.40569395, 49.24199288])

kita dapat menggunakan persamaan diatas untuk mengetahui prediksi nilai dari y.

b1 = reg.coef_[0]
b2 = reg.coef_[1]
b3 = reg.coef_[2]
b4 = reg.coef_[3]
x1 = 4
x2 = 5
x3 = 2
x4 = 1
y = b1*x1 + b2*x2 + b3*x3 + b4*x4 + a
y

maka akan tampil seperti berikut, yang merupakan hasil dari persamaan tersebut.

104.89679715302498

Selain itu kita dapat menggunakan fungsi bawaan dari class LinearRegression() untuk memprediksi data baru yang diberikan.

reg.predict(np.array([[4, 5, 2, 1]]))

maka akan tampil seperti berikut, yang hasilnya sama seperti hasil dari persamaan diatas.

array([104.89679715])